package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import admincow.util.ConexionBD;
import admincow.vo.BecerroVO;
import admincow.vo.UsuarioVO;


public class BecerroDAO {

	public BecerroVO obtenerPorRPbecerro(String RPbecerro) {
		BecerroVO vo = new BecerroVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select RPbecerro,idinseminacion,idparto,RPtoro,idraza,RPvaca,nombre,fech_nac,sexo,registro,fech_reg,estado FROM becerro where RPbecerro='" + RPbecerro + "'");
			if (rs.next()) {
				vo.setRPbecerro(rs.getString("RPbecerro"));
				vo.setIdinseminacion(rs.getInt("idinseminacion"));
				vo.setIdparto(rs.getInt("idparto"));
				vo.setRPtoro(rs.getString("RPtoro"));
				vo.setIdraza(rs.getInt("idraza"));
				vo.setRPvaca(rs.getString("RPvaca"));
				vo.setNombre(rs.getString("nombre"));
				vo.setFech_nac(rs.getString("fech_nac"));
				vo.setSexo(rs.getString("sexo"));
				vo.setRegistro(rs.getInt("registro"));				
				vo.setFech_reg(rs.getString("fech_reg"));				
				vo.setEstado(rs.getString("estado"));
				System.out.println("saliendo");
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
//Envia 
	public BecerroVO codigo(String auto) {
		System.out.println("Estamos obteniendo el codigo becerron");
		BecerroVO vi = new BecerroVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select (MAX(right(RPbecerro,4))+1)as nro from becerro WHERE LEFT(RPbecerro,4)='" + auto + "'");
		
			if (rs.next()) {
				vi.setRPbecerro(rs.getString("nro"));
			}
			    System.out.println("El error esta ahi si no pasa esto");
				rs.close();
				stmt.close();
				con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vi;
	}
	//
	public BecerroVO insertar(BecerroVO vo) {
		System.out.println("Ingresando al insetar Becerro");
		String query1 = "INSERT INTO becerro (RPbecerro,idinseminacion,idparto,RPtoro,idraza,RPvaca,nombre,fech_nac,sexo,registro,fech_reg,estado) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
		System.out.println(query1);
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query1);
			stmt.setString(1, vo.getRPbecerro());
			stmt.setInt(2, vo.getIdinseminacion());
			stmt.setInt(3, vo.getIdparto());
			stmt.setString(4, vo.getRPtoro());
			stmt.setInt(5, vo.getIdraza());
			stmt.setString(6, vo.getRPvaca());
			stmt.setString(7, vo.getNombre());
			stmt.setString(8, vo.getFech_nac());
			stmt.setString(9, vo.getSexo());
			stmt.setInt(10, vo.getRegistro());
			stmt.setString(11, vo.getFech_reg());
			stmt.setString(12, vo.getEstado());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	

	public Collection<BecerroVO> buscarPorNombre(String nombre) {
		System.out.println("entrando");
		String query ="select RPbecerro,idinseminacion,idparto,RPtoro,idraza,RPvaca,nombre,fech_nac,sexo,registro,fech_reg,estado from becerro where nombre like '%" + nombre + "%' and estado=1";
		System.out.println("tu selec si funciona");
		Collection<BecerroVO> c = new ArrayList<BecerroVO>();

		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				BecerroVO vo = new BecerroVO();
				vo.setRPbecerro(rs.getString("RPbecerro"));
				vo.setIdinseminacion(rs.getInt("idinseminacion"));
				vo.setIdparto(rs.getInt("idparto"));
				vo.setRPtoro(rs.getString("RPtoro"));
				vo.setIdraza(rs.getInt("idraza"));
				vo.setRPvaca(rs.getString("RPvaca"));
				vo.setNombre(rs.getString("nombre"));
				vo.setFech_nac(rs.getString("fech_nac"));
				vo.setSexo(rs.getString("sexo"));
				vo.setRegistro(rs.getInt("registro"));				
				vo.setFech_reg(rs.getString("fech_reg"));				
				vo.setEstado(rs.getString("estado"));
				System.out.println("saliendo");
				c.add(vo);
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return c;
	}

	public void eliminar(String becerro) {
		System.out.println("Ingresando al eliminar becerro");
		String query = "DELETE FROM becerro WHERE RPbecerro=?";
		System.out.println(becerro);
		// Table usuario
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			
			stmt.setString(1, becerro);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar funcion");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public BecerroVO actualizar(BecerroVO vo) {
		System.out.println("Ingresando al actualizar becerro");
		String query = "update becerro set idinseminacion=?,idparto=?,RPtoro=?,idraza=?,RPvaca=?,nombre=?,fech_nac=?,sexo=?,registro=?,fech_reg=?,estado=? where RPbecerro=?";
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setInt(1, vo.getIdinseminacion());
			stmt.setInt(2, vo.getIdparto());
			stmt.setString(3, vo.getRPtoro());
			stmt.setInt(4, vo.getIdraza());
			stmt.setString(5, vo.getRPvaca());
			stmt.setString(6, vo.getNombre());
			stmt.setString(7, vo.getFech_nac());
			stmt.setString(8, vo.getSexo());
			stmt.setInt(9, vo.getRegistro());
			stmt.setString(10, vo.getFech_reg());
			stmt.setString(11, vo.getEstado());
			stmt.setString(12, vo.getRPbecerro());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	
}



	
